package br.ucb.ProjetoFinal.view;

import br.ucb.ProjetoFinal.domain.MotivoRejeicao;
import br.ucb.ProjetoFinal.service.MotivoRejeicaoService;
import java.io.Serializable;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/*
 * Managed bean responsavel pelo caso de uso MANTER MOTIVO DE REJEIÇÃO
 */
@ManagedBean(name="managedMotivoRejeicao")
@SessionScoped
public class ManagedMotivosRejeicao implements Serializable{

//////////////////////////////////ATRIBUTOS/////////////////////////////////////
    @EJB
    private MotivoRejeicaoService service;
    //Usado para armazenar o valor dos campos
    private Short codigo;
    private String descricao;
    MotivoRejeicao motivoRejeicao;
    //Esta LIST receberá os vários motivoRejeicaos cadastrados, na hora da pesquisa
    private List<MotivoRejeicao> motivoRejeicaos;
    //Usado na CONSULTA
    private String numRadioPesquisa;

////////////////////////////////////////////////////////////////////////////////

    public ManagedMotivosRejeicao() {
        //Seta o valor inicial para os radio-buttons na pagina da consulta
        setCodigo(null);
        setDescricao(null);
        setNumRadioPesquisa("cod");
    }


    // METODO USADO PARA PESQUISA DE MOTIVOS DE REJEIÇÃO////////////////////////////
        public String procurar(){
            //Se nenhum dos campos for informado....
            if((getCodigo()==null && getDescricao().isEmpty())){
                FacesMessage fm = new FacesMessage("O usuário deve preencher pelo menos um dos campos ou selecionar a opção para pesquisar todos");
                FacesContext.getCurrentInstance().addMessage("Operação inválida", fm);
                return "consultaReject";
            }
            setMotivoRejeicaos(service.getMotivosRejeicoes(new MotivoRejeicao(codigo,descricao)));

            // Se o array estiver vazio, significa que não foram encontrados resultados
            if(getMotivoRejeicaos().isEmpty())
                return "semResults";
            else
                return "listMotRej";
        }
        // FIM DO METODO////////////////////////////////////////////////////////////

        // METODO USADO PARA PESQUISA DE MOTIVOS DE REJEIÇÃO////////////////////////////
            public String procurarTodos(){
                setMotivoRejeicaos(service.getMotivoRejeicoes());
                //Se o array estiver vazio, significa que não foram encontrados resultados
                if(getMotivoRejeicaos().isEmpty())
                    return "semResults";
                else
                    return "listMotRej";

            }
        // FIM DO METODO////////////////////////////////////////////////////////////


    //FUNÇÃO USADA PARA CONSULTAR UM MOTIVO DE REJEICAO

        public String consultaMotivo(){
            setCodigo(null);
            setDescricao(null);

            return "consultaReject";
        }
    //FIM DAS FUNÇÕES///////////////////////////////////////////////////////////


//GETTERS & SETTERS/////////////////////////////////////////////////////////////

    public Short getCodigo() {
        return codigo;
    }

    public void setCodigo(Short codigo) {
        this.codigo = codigo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public MotivoRejeicao getMotivoRejeicao() {
        return motivoRejeicao;
    }

    public void setMotivoRejeicao(MotivoRejeicao motivoRejeicao) {
        this.motivoRejeicao = motivoRejeicao;
    }

    public List<MotivoRejeicao> getMotivoRejeicaos() {
        return motivoRejeicaos;
    }

    public void setMotivoRejeicaos(List<MotivoRejeicao> motivoRejeicaos) {
        this.motivoRejeicaos = motivoRejeicaos;
    }

    public MotivoRejeicaoService getService() {
        return service;
    }

    public void setService(MotivoRejeicaoService service) {
        this.service = service;
    }

    public String getNumRadioPesquisa() {
        return numRadioPesquisa;
    }

    public void setNumRadioPesquisa(String numRadioPesquisa) {
        this.numRadioPesquisa = numRadioPesquisa;
    }
}
